#include <stdio.h>

int main(int argc, char *argv[])
{
    unsigned int a = 0x3ae4;
    unsigned int b = 0x45ff;

    // ~位运算 取反运算符 每一位都取反
    printf("~%x is %#x\n", a, ~a);
    // &位运算 逻辑与 逢零为零
    printf("%x & %x is %#x\n", a, b, a & b);
    // |位运算 逻辑或 逢一为一
    printf("%x | %x is %#x\n", a, b, a | b);
    // ^位运算 逻辑抑或 不同为一，相同为零
    printf("%x ^ %x is %#x\n", a, b, a ^ b);
    // <<位运算 左移一位 最左抵消，最右补零
    printf("%x << 1 is %#x\n", a, a << 1);
    // >>位运算 右移一位 最右抵消, 最左补零
    printf("%x >> 1 is %#x\n", a, a >> 1);

    return 0;
}
